package com.blog.cloud.core.annotation;

import java.lang.annotation.*;

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RedisLock {

    /**
     * 锁名称
     */
    String lockName() default "";

    /**
     * 默认的加锁类型
     */
    RedisLockType redisLockType() default RedisLockType.LOCK;

    /**
     * 加锁等待时间
     */
    long waitTime() default 30;

    /**
     * 锁的过期时间
     */
    long expireTime() default 30;

    enum RedisLockType {
        LOCK,
        READ,
        WRITE;
    }
}
